package com.zrrd.learn.chapter07;

import java.util.Random;
import java.util.Scanner;

/**
 * 字符串题3
 *
 * @author asus
 * @version 1.0
 * @date 2023/7/19 20:53
 */
public class StringWork03 {
    //    定义一个数组内容为{1,2,3},要求输出结果为：[word1#word2#word3]。
    //数组转字符串
    public static String q1(int[] arr) {
        StringBuilder stringBuilder = new StringBuilder("[");
        for (int i = 0; i < arr.length; i++) {
            stringBuilder.append("word").append(arr[i]).append("#");
        }
        return stringBuilder.append("]").toString();
    }

    //、键盘输入一个字符串，并且统计其中各种字符出现的次数。种类有：大写字母、小
    //写字母、数字、其他。
    public static void q2_1() {
        Scanner scanner = new Scanner(System.in);
        String word = scanner.next();

        StringBuilder stringBuilder = new StringBuilder(word);
        while (stringBuilder.length() > 0) {
            int len = stringBuilder.length();
            String firstLetter = stringBuilder.substring(0, 1);
            stringBuilder = new StringBuilder(stringBuilder.toString().replace(firstLetter, ""));
            int sum = len - stringBuilder.length();
            System.out.printf("字母%s出现的次数为:%d\n", firstLetter, sum);

        }
    }

    public static void q2_2() {
        Scanner scanner = new Scanner(System.in);
        String word = scanner.nextLine();
        int f = 0;
        int s = 0;
        int t = 0;
        int four = 0;
        for (int i = 0; i < word.length(); i++) {
            if (word.charAt(i) >= '0' && word.charAt(i) <= '9') {
                f++;
            } else if (word.charAt(i) >= 'a' && word.charAt(i) <= 'z') {
                s++;
            } else if (word.charAt(i) >= 'A' && word.charAt(i) <= 'Z') {
                t++;
            } else {
                four++;
            }
        }
        System.out.println("数字有" + f + "个");
        System.out.println("小写字母有" + s + "个");
        System.out.println("大写字母有" + t + "个");
        System.out.println("其它字符" + four + "个");
    }

    //    、分析以下需求,并用代码实现
//    键盘录入一个字符串，要求删除该字符串中的所有java字符串（最终的字符串中
//    不能包含java），要求打印删除后的结果以及删除了几个java字符串比如键盘录入:
//    javawoaijava,ilikejajavavaienjoyjava程序输出结果:原字符串woai,ilikeienjoy中总共包含:
//    5个java删除java后的字符串为:woai,ilikeienjoy

    public static void q3() {
        Scanner scanner = new Scanner(System.in);
        String word = scanner.nextLine();
        int len = word.length();

        while (word.contains("java")) {
            word = word.replace("java", "");
        }

        System.out.println(word);
        System.out.println((len - word.length()) / 4);
    }

//4、创建一个一维数组arr(String类型)，里面元素有{“a”,”s”,”d”,”f”,”a”,”a”,”d”,”2”,”3”,”8”}，
//    根据里面的元素随机生成一个长度为5的字符串，将该字符串中相同的元素去重然后再反序输出到控制台上。

    public static void q4() {
        String arr[] ={"a","s","d","f","a","a","d","2","3","8"};
        Random random = new Random();
        StringBuilder str = new StringBuilder();
        StringBuilder str2 = new StringBuilder();
        for (int i=0;i<5;i++){
            str.append(arr[random.nextInt(arr.length)]);
        }
        System.out.println("去重前：" + str.toString());
        for (int i = 0; i < str.length(); i++) {
            if (str.indexOf(String.valueOf(str.charAt(i))) == i) {
                str2.append(str.charAt(i));
            }
        }
        System.out.println("去重反转后：" + str2.reverse().toString());

        }




//5、按需求完成指定功能，题目如下：
//            (1)打印由7，8，9三个数组组成的三位数，要求该三位数中任意两位数字不能相同
//            (2)打印格式最后的三位数字以空格分隔，如789 798 879 897 978 987

    public static void q5() {
        int[] ar = {7, 8, 9};
        for (int i = 0; i < ar.length; i++) {
            int first = 0;
            int second = 0;
            switch (i) {
                case 0:
                    first = i + 1;
                    second = i + 2;
                    break;
                case 2:
                    first = i - 1;
                    second = i - 2;
                    break;
                default:
                    first = i - 1;
                    second = i + 1;
            }
            System.out.printf("%d %d %d\t", ar[i], Math.max(ar[first], ar[second]), Math.min(ar[first], ar[second]));
            System.out.printf("%d %d %d\t", ar[i], Math.min(ar[first], ar[second]), Math.max(ar[first], ar[second]));
        }
    }


//6、按需求完成指定功能，题目如下：
//            (1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”}
//(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等，第二个数字和倒数第二个数字是相等的，依次类推)的，并逐个输出
//            (3)如：010 是对称的，3223 是对称的，123123 不是对称的


//    给定一个整型数组，数组成员10个,求该数组中第二大的数的下标

    public static void q7(){
        int arr[]={10,52,5,4,5,8,5,452,45};
        int max= arr[0];
        int maxindex = 0;
        int secend = 0;
        int secendindex = 0;
        for(int i=0;i<arr.length;i++){
            if(max<arr[i]){
                secend=max;
                secendindex=maxindex;
                max=arr[i];
                maxindex=i;
            }else {//max>=arr[i]
                if(secend<arr[i]){
                    secend=arr[i];
                    secendindex=i;
                }
            }
        }
        System.out.println("第二大数是"+secend+"角标是"+secendindex);
    }


    public static void main(String[] args) {
        int[] a = {1, 2, 3};
//        System.out.println(q1(a));
//        q2_2();
//        q3();
//        q5();
//            q4();

            q7();
    }


}
